package com.siqi.hr.system.organization.dao.intf;

import com.siqi.hr.system.organization.entity.Employee;

import java.util.List;
import java.util.Map;

/**
 * 员工信息维护dao接口层
 * @author     xiaogq
 * Created by xiaogoingqin on 2016/7/21.
 */
public interface EmployeeDao {

    /**
     * 根据登录名称获得用户信息(xiaogq)
     * @param loginName    前台页面传过来的登录名
     * @return
     */
    public Employee queryEmpAndDepAndRoleByLogUsername(String loginName)throws Exception;

    /**
     * 根据员工id修改最近登录的时间(xiaogq)
     * @param empId       当前登录系统的员工id
     * @return
     */
    public void updateEmpLoginDate(String empId)throws Exception;

    /**
     * 修改用户密码时验证原密码是否正确
     * @author           xiaogq
     * @param empid     员工id
     * @param pwd        原密码
     * @return
     */
    public Boolean loginPwdConfirm(String empid, String pwd);

    /**
     * 修改用户密码
     * @author           xiaogq
     * @param empid     员工id
     * @param pwd        新密码
     * @return
     */
    public void updatePwd(String empid, String pwd);

    /**
     * 清空用户密码
     * @author                 xiaogq
     * @param employeeId     员工id
     * @return
     */
    public void emptyEmployeePassword(String employeeId);

    /**
     * 获取员工最大工号编号
     * @author                 xiaogq
     * @param tableName     （表名）
     * @return
     */
    public int getMaxJobNumber(String tableName);

    /**
     * 根据员工id删除员工与部门关系
     * @author                 xiaogq
     * @return
     */
    public void delEmpAndDeptRelation(String empId);

    /**
     * 根据获取当前岗位人员数量
     * @author ChenL
     */
    public long getCountByPostId(String postId,String empTableName,String empPostTableName);

    /**
     * 根据人员岗位关系表查询当前岗位人员
     * @author ChenL
     */
    public List<Map<String,Object>> getEmpListByPostId(String postId,String empTableName,String deptTableName,String zEmpPostTableName);

    /**
     * 根据岗位id模糊查询人员
     * @author ChenL
     */
    public List<Map<String, Object>> searchEmpByPostId(String empTableName,String deptTableName,String postId,String search);

    /**
     * 查询所有用户数据
     * @return
     */
    public List<Map<String, Object>> queryRelationUsers(String tableName, String empDeptTableName, String empTableName);

    /**
     * 获取所有的员工id及姓名
     * @author xiaogq
     * @param tableName    员工表名
     * @return
     */
    public List<Map<String,Object>> getAllEmpName(String tableName);
}
